import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// new Vuex.Store 创建对象
export default new Vuex.Store({
    // 共享的数据
    state: {
        count: 0
    },
    // 获取state中的数据，不会修改
    getters: {
        showNum (state) {
            return state.count
        }
    },
    // 更新state中的数据，只能执行同步操作
    mutations: {
        add (state) {
            state.count++
        }
    },
    // 用于处理异步任务
    actions: {
        addAsync (context) {
            setTimeout(() => {
                // actions中,不能直接修改state中的数据
                // 必须通过context.commit触发mutation中的函数执行
                context.commit('add')
            }, 1000)
        }
    }
});